<?php

class ValidadorDeFormularioDeIdioma extends Model{
	
	/*******************
	 * ATRIBUTOS 
	 *******************/
	
	private $mensagemStatus;
	private $formularioValido;
	public $camposDoFormulario;
	public $errors;
	
	/*******************
	 * CONSTRUTOR 
	 *******************/
	
	public function __construct() {
		// load database library into $this->db (can be omitted if not required)
		//parent::__construct();
		$this->mensagemStatus = "";
		$this->formularioValido = false;
		$this->errors = array();
		$this->camposDoFormulario = null;
	}
	
	/*******************
	 * METODOS 
	 *******************/	

	//Verifica se há erros em qualquer um dos campos do formulário, caso houver devolve o array de erros
	public function verificarCamposValidos(){
		$this->camposDoFormulario = Validate::factory($_POST)
		->rule('portuguesLe', 'not_empty')
		->rule('portuguesEscreve', 'not_empty')
		->rule('portuguesFala', 'not_empty')
		->rule('portuguesEntende', 'not_empty');

		// verificando checkbox ingles
		if(isset($_POST['ingles'])){
			$this->camposDoFormulario->rule('inglesLe', 'not_empty');
			$this->camposDoFormulario->rule('inglesEscreve', 'not_empty');
			$this->camposDoFormulario->rule('inglesFala', 'not_empty');
			$this->camposDoFormulario->rule('inglesEntende', 'not_empty');
		}

		// verificando checkbox espanhol
		if(isset($_POST['espanhol'])){
			$this->camposDoFormulario->rule('espanholLe', 'not_empty');
			$this->camposDoFormulario->rule('espanholEscreve', 'not_empty');
			$this->camposDoFormulario->rule('espanholFala', 'not_empty');
			$this->camposDoFormulario->rule('espanholEntende', 'not_empty');
		}
		
		// verificando checkbox outros idiomas
		if(isset($_POST['outrosIdiomas'])){
			$this->camposDoFormulario->rule('outrosIdiomasNome', 'not_empty');
			$this->camposDoFormulario->rule('outrosLe', 'not_empty');
			$this->camposDoFormulario->rule('outrosEscreve', 'not_empty');
			$this->camposDoFormulario->rule('outrosFala', 'not_empty');
			$this->camposDoFormulario->rule('outrosEntende', 'not_empty');
		}
	
		// verificando checkbox outra comunicacao
		if(isset($_POST['outraComunicacaoCheck'])){
			$this->camposDoFormulario->rule('outraComunicacaoNome', 'not_empty');
		}
		
		
		if ($this->camposDoFormulario->check()){
			$this->setFormularioValido(true);
		}
		else{
			$this->setFormularioValido(false);			
			$this->setErros($this->camposDoFormulario->errors('camposDoFormularioDeFormularioDeEndereco'));
			$this->redefinirMensagensDeErro();	
		}	
		
	}
	
	private function redefinirMensagensDeErro(){
		//REDEFININDO AS MENSAGENS DE ERRO
		if (isset($this->errors['portuguesLe'])){
			$this->errors['portuguesLe'] = "Informe nível de leitura";
		}
		if (isset($this->errors['portuguesEscreve'])){
				$this->errors['portuguesEscreve'] = "Informe nível de escrita";
		}
		if (isset($this->errors['portuguesFala'])){
				$this->errors['portuguesFala'] = "Informe nível de conversação";
		}
		if (isset($this->errors['portuguesEntende'])){
				$this->errors['portuguesEntende'] = "Informe nível de interpretação";
		}
		if (isset($this->errors['inglesLe'])){
			$this->errors['inglesLe'] = "Informe nível de leitura";
		}
		if (isset($this->errors['inglesEscreve'])){
				$this->errors['inglesEscreve'] = "Informe nível de escrita";
		}
		if (isset($this->errors['inglesFala'])){
				$this->errors['inglesFala'] = "Informe nível de conversação";
		}
		if (isset($this->errors['inglesEntende'])){
				$this->errors['inglesEntende'] = "Informe nível de interpretação";
		}
		if (isset($this->errors['espanholLe'])){
			$this->errors['espanholLe'] = "Informe nível de leitura";
		}
		if (isset($this->errors['espanholEscreve'])){
				$this->errors['espanholEscreve'] = "Informe nível de escrita";
		}
		if (isset($this->errors['espanholFala'])){
				$this->errors['espanholFala'] = "Informe nível de conversação";
		}
		if (isset($this->errors['espanholEntende'])){
				$this->errors['espanholEntende'] = "Informe nível de interpretação";
		}
		if (isset($this->errors['outrosIdiomasNome'])){
			$this->errors['outrosIdiomasNome'] = "Informe o Idioma";
		}
		if (isset($this->errors['outrosLe'])){
			$this->errors['outrosLe'] = "Informe nível de leitura";
		}
		if (isset($this->errors['outrosEscreve'])){
				$this->errors['outrosEscreve'] = "Informe nível de escrita";
		}
		if (isset($this->errors['outrosFala'])){
				$this->errors['outrosFala'] = "Informe nível de conversação";
		}
		if (isset($this->errors['outrosEntende'])){
				$this->errors['outrosEntende'] = "Informe nível de interpretação";
		}
		if (isset($this->errors['outraComunicaoNome'])){
				$this->errors['outraComunicaoNome'] = "Informe qual é o outro";
		}
		if(isset($this->errors['outraComunicacaoNome'])){
			$this->errors['outraComunicacaoNome'] = "Informe qual é o outro";
		}
	}



	// This might go in base Model class
	public function getFormValues() {
		return arr::overwrite($this->fields, $this->$camposDoFormulario->as_array());
	}

	// This might go in base Model class
	public function getValidationErrors() {
		return arr::overwrite($this->fields, $this->$camposDoFormulario->errors('form_errors'));
	}

	
	/*******************
	 * GETTERS/SETTERS 
	 *******************/
	
	public function isFormularioValido() {
		return $this->formularioValido;
	}
	
	public function setFormularioValido($formularioValido){
		$this->formularioValido = $formularioValido;
	}
	
	public function getErros() {
		return $this->errors;
	}
	
	public function setErros($errors){
		$this->errors = $errors;
	}
	
	public function getCamposDoFormulario() {
		return $_POST;
	}
	
	public function setCamposDoFormulario($camposDoFormulario){
		$this->camposDoFormulario = $camposDoFormulario;
	}
}
?>